package com.example.testapplication.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.testapplication.R;
import com.example.testapplication.bean.Planet;

import java.util.ArrayList;

public class PlanetListAdapter extends BaseAdapter implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {
    private Context mContext; // 声明一个上下文对象
    private ArrayList<Planet> mPlanetList; // 声明一个行星队列

    // 行星适配器的构造函数 传入上下问与行星队列
    public PlanetListAdapter(Context context,ArrayList<Planet> planet_list){
        mContext = context;
        mPlanetList = planet_list;
    }

    // 获取列表项的个数
    @Override
    public int getCount() {
        return mPlanetList.size();
    }
  // 获取列表项的数据
    @Override
    public Object getItem(int i) {
        return mPlanetList.get(i);
    }
    // 获取列表项的编号
    @Override
    public long getItemId(int i) {
        return i;
    }
    // 获取指定位置的列表项视图
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder;
        if(view == null){  // 转换视图为空
            holder = new ViewHolder(); // 创建一个新的视图持有者
            // 根据布局文件item_list.xml 生成一个新视图持有者
            view = LayoutInflater.from(mContext).inflate(R.layout.item_list,null);
            holder.p_icon = view.findViewById(R.id.p_icon);
            holder.p_name = view.findViewById(R.id.p_name);
            holder.p_desc = view.findViewById(R.id.p_desc);

             // 将视图持有者保存到转换视图当中
            view.setTag(holder);
        }else{
            // 从转换视图中获取之前保存的视图持有者
            holder = (ViewHolder) view.getTag();
        }
        Planet planet = mPlanetList.get(i);
        holder.p_name.setText(planet.name);
        holder.p_icon.setImageResource(planet.image);
        holder.p_desc.setText(planet.desc);

        return view;
    }

    // 定义视图持有者，以便重用列表项的视图资源
    public final class ViewHolder{
        public ImageView p_icon; // 声明行星图片视图对象
        public TextView p_name;
        public TextView p_desc;
    }

    // 处理列表项的点击事件，由接口OnItemClickListener触发
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String desc = String.format("您点击了第%d个行星，它的名字是%s", position + 1,
                mPlanetList.get(position).name);
        Toast.makeText(mContext, desc, Toast.LENGTH_LONG).show();
    }

    // 处理列表项的长按事件，由接口OnItemLongClickListener触发
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        String desc = String.format("您长按了第%d个行星，它的名字是%s", position + 1,
                mPlanetList.get(position).name);
        Toast.makeText(mContext, desc, Toast.LENGTH_LONG).show();
        return true;
    }

}
